
// 48b-dst_MAC
// 48b-src_MAC
// 32b-src_IP
// 32b-dst_IP
// 16b-src_port
// 16b-dst_port
module assemble_frame_info_fifo (
    input                       clk                         ,
    input                       rst                         ,
    input   [9:0]               ram_2p_cfg_register         ,
    // write channel
    input                       fifo_wr_en                  ,
    input       [47:0]          DATALINK_dst_mac_fifo       ,
    input       [47:0]          DATALINK_src_mac_fifo       ,
    input       [31:0]          NETWORK_src_IP_fifo         ,
    input       [31:0]          NETWORK_dst_IP_fifo         ,
    input       [15:0]          TRANSPORT_src_port_fifo     ,
    input       [15:0]          TRANSPORT_dst_port_fifo     ,
    // read channel
    input                       fifo_rd_en                  ,
    output      [47:0]          rd_DATALINK_dst_mac_fifo    ,
    output      [47:0]          rd_DATALINK_src_mac_fifo    ,
    output      [31:0]          rd_NETWORK_src_IP_fifo      ,
    output      [31:0]          rd_NETWORK_dst_IP_fifo      ,
    output      [15:0]          rd_TRANSPORT_src_port_fifo  ,
    output      [15:0]          rd_TRANSPORT_dst_port_fifo  
) ;

    wire    frame_info_fifo_full ;
    wire    frame_info_fifo_empty ;
`ifdef FPGA_MODE
    frame_info_fifo_32d_192w inst_frame_info_fifo (
        .clk        (clk),      // input wire clk
        .rst        (rst),    // input wire srst

        .din        (  {DATALINK_dst_mac_fifo ,
                        DATALINK_src_mac_fifo ,
                        NETWORK_src_IP_fifo ,
                        NETWORK_dst_IP_fifo ,
                        TRANSPORT_src_port_fifo ,
                        TRANSPORT_dst_port_fifo}    ),  // input wire [191 : 0] din
        .wr_en      (fifo_wr_en                     ),  // input wire wr_en
        .rd_en      (fifo_rd_en                     ),  // input wire rd_en
        .dout       (  {rd_DATALINK_dst_mac_fifo ,
                        rd_DATALINK_src_mac_fifo ,
                        rd_NETWORK_src_IP_fifo ,
                        rd_NETWORK_dst_IP_fifo ,
                        rd_TRANSPORT_src_port_fifo ,
                        rd_TRANSPORT_dst_port_fifo} ),  // output wire [191 : 0] dout  
                                                

        .full       (frame_info_fifo_full           ),  // output wire full
        .empty      (frame_info_fifo_empty          )   // output wire empty
    );
`else
    fifo_32d_192w_wrapper inst_frame_info_fifo (
        .clk        (clk),      // input wire clk
        .rst        (rst),    // input wire srst
        .ram_2p_cfg_register(ram_2p_cfg_register),

        .din        (  {DATALINK_dst_mac_fifo ,
                        DATALINK_src_mac_fifo ,
                        NETWORK_src_IP_fifo ,
                        NETWORK_dst_IP_fifo ,
                        TRANSPORT_src_port_fifo ,
                        TRANSPORT_dst_port_fifo}    ),  // input wire [191 : 0] din
        .wr_en      (fifo_wr_en                     ),  // input wire wr_en
        .rd_en      (fifo_rd_en                     ),  // input wire rd_en
        .dout       (  {rd_DATALINK_dst_mac_fifo ,
                        rd_DATALINK_src_mac_fifo ,
                        rd_NETWORK_src_IP_fifo ,
                        rd_NETWORK_dst_IP_fifo ,
                        rd_TRANSPORT_src_port_fifo ,
                        rd_TRANSPORT_dst_port_fifo} ),  // output wire [191 : 0] dout  
                                                

        .full       (frame_info_fifo_full           ),  // output wire full
        .empty      (frame_info_fifo_empty          )   // output wire empty
    );
`endif

endmodule
